package ejb;

import java.util.Date;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import modelo.Persona;

@Stateless
public class Fachada implements FachadaRemote, FachadaLocal {
    @PersistenceContext(unitName = "ProyectoJ2EE-ejbPU")
    private EntityManager em;

    
    
    @Override
    public void insertarPersona(String nombre, Date fechaNacimiento, boolean enActivo) {
        Persona per = new Persona(nombre,enActivo,fechaNacimiento);
        em.persist(per);
    }

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
    public void insertarPersona(Persona per) {
        em.persist(per);
        em.flush();
    }

    @Override
    public Persona buscar(Integer id) {
        return em.find(Persona.class, id);
    }

    @Override
    public void actualizar(Persona per) {
        em.merge(per);
        // throw new RuntimeException("Error forzado");
    }

    @Override
    @TransactionAttribute(TransactionAttributeType.NEVER)    
    public void insertar3Personas(Persona per1, Persona per2, Persona per3) {
        try {
            insertarPersona(per1);
        } catch (Exception e) {
            System.out.println("Error insertando "+per1);
        }
        try {
            insertarPersona(per2);
        } catch (Exception e) {
            System.out.println("Error insertando "+per2);
        }
        try {
            insertarPersona(per3);
        } catch (Exception e) {
            System.out.println("Error insertando "+per3);
        }
    }



    
}
